#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 设置一下根节点的名字
    ui->treeWidget->setHeaderLabel("动物");
    // 新增顶层节点
    QTreeWidgetItem* item1 = new QTreeWidgetItem();
    // 设置文本
    // 每个节点(Item)都可以设置多个列
    item1->setText(0, "猫");
    // 添加到顶层节点中
    ui->treeWidget->addTopLevelItem(item1);

    // 新增顶层节点
    QTreeWidgetItem* item2 = new QTreeWidgetItem();
    // 设置文本
    // 每个节点(Item)都可以设置多个列
    item2->setText(0, "狗");
    // 添加到顶层节点中
    ui->treeWidget->addTopLevelItem(item2);

    // 新增顶层节点
    QTreeWidgetItem* item3 = new QTreeWidgetItem();
    // 设置文本
    // 每个节点(Item)都可以设置多个列
    item3->setText(0, "鸟");
    // 添加到顶层节点中
    ui->treeWidget->addTopLevelItem(item3);

    // 再给顶层节点添加一些子节点
    QTreeWidgetItem* item4 = new QTreeWidgetItem();
    item4->setText(0, "中华田园猫");
    // 添加到父节点
    item1->addChild(item4);

    // 再给顶层节点添加一些子节点
    QTreeWidgetItem* item5 = new QTreeWidgetItem();
    item5->setText(0, "布偶猫");
    // 添加到父节点
    item1->addChild(item5);

    // 再给顶层节点添加一些子节点
    QTreeWidgetItem* item6 = new QTreeWidgetItem();
    item6->setText(0, "暹罗猫");
    // 添加到父节点
    item1->addChild(item6);



}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_insert_top_clicked()
{
     // 先获取到输入框中的内容
    const QString& content = ui->lineEdit->text();
    if (content.isEmpty()) {
        ui->label->setText("元素名称不能为空!!");
        return;
    }
    // 构造一个QTreeWidgetItem
    QTreeWidgetItem* item = new QTreeWidgetItem();
    item->setText(0, content);
    // 添加到顶层节点中
    ui->treeWidget->addTopLevelItem(item);

}

void Widget::on_pushButton_insert__clicked()
{
    // 也是先获取到输入框当中的内容
    const QString& content = ui->lineEdit->text();
    if (content.isEmpty()) {
        ui->label->setText("元素名称不能为空!!");
        return;
    }
    // 获取到当前被选中的节点
    QTreeWidgetItem* curitem = ui->treeWidget->currentItem();
    if (curitem == nullptr) {
        ui->label->setText("当前没有节点被选中!!");
        return;
    }

    // 创建一个item
    QTreeWidgetItem* item = new QTreeWidgetItem();
    item->setText(0, content);

    // 插入到被选中节点的子节点中
    curitem->addChild(item);
}

void Widget::on_pushButton_remove_clicked()
{
    // 先获取到被选中的元素
    QTreeWidgetItem* curitem = ui->treeWidget->currentItem();
    if (curitem == nullptr) {
        ui->label->setText("当前没有元素被选中!!");
        return;
    }
    // 删除被选中的节点
    // 需要先获取到被选中元素的父元素, 在通过父元素进行删除
    QTreeWidgetItem* parentitem = curitem->parent();
    if (parentitem == nullptr) {
        // 如果父元素为空，说明当前被选中的元素是一个顶层元素
        // 如果是顶层元素，我们还需要获取当前元素的顶层元素的下标
        int index = ui->treeWidget->indexOfTopLevelItem(curitem);
        // 在通过根节点删除
        ui->treeWidget->takeTopLevelItem(index);
    } else {
        // 父元素不为空，则说明当前被选中的节点是一个普通元素
        // 通过父元素进行删除
        parentitem->removeChild(curitem);
    }

}
